﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ErgoBreak.Core
{
    public interface IController
    {
        #region Events
        /// <summary>
        /// Happens when a break is started.
        /// </summary>
        event EventHandler BreakStarted;

        /// <summary>
        /// Happens when a break is ended.
        /// </summary>
        event EventHandler BreakEnded;

        /// <summary>
        /// Occurs when a break is canceled.
        /// </summary>
        event EventHandler BreakCanceled;

        /// <summary>
        /// Occurs when a break is snoozed. 
        /// </summary>
        event EventHandler Snoozed;

        /// <summary>
        /// Occurs when a break snooze is over
        /// </summary>
        event EventHandler SnoozeElapsed;
        #endregion

        #region Properties

        #endregion

        #region Methods
        /// <summary>
        /// Cancels the ongoing break.
        /// </summary>
        void CancelBreak();

        /// <summary>
        /// Postpones the current break.
        /// </summary>
        /// <param name="duration">The amount of time, in minutes, that it will postpone 
        /// the break for.</param>
        void Postpone(int duration);
        #endregion
    }
}
